Casting zwischen Strukturen
In Nicht-Unicode-Systemen kann man eine beliebige Struktur füllen und diese dann in ein Character-Feld schieben. Bei Unicode-Systemen geht’s nicht mehr so einfach; hier müssen die verschiedenen Strukturen per Assign “gecastet” werden. Danach können sie zugewiesen werden.
Sobald ein nicht-Zeichenartiges Feld in der Quellstruktur vorkommt, kann die Zuweisung in einem Unicode-System nicht über einen normalen MOVE bewerkstelligt werden. Hier meckert der Compiler: ” “Quellstruktur” und “Zielstruktur” sind in einem Unicode-Programm nicht ineinander konvertierbar”
Macht man dasselbe über einen ungecasteteten ASSIGN, so erhält man den Kurzdump “UC_OBJECTS_NOT_CONVERTIBLE”.
Besteht die Struktur aus reinen CHAR- oder NUMC-Feldern, kann die Zuweisung so erfolgen:
LV_FELD = LS_DATA.
Das folgende Coding zeigt die Lösung, wenn auch andere Typen verwendet werden.
Coding mit definierter Struktur
*** Type der eigenen Struktur
TYPES:
BEGIN OF ty_data,
feld1(10) TYPE c,
feld2(5) TYPE n,
feld3 TYPE i,
feld4(6) TYPE p DECIMALS 3,
END OF ty_data.
DATA:
*** Eigene Struktur
ls_data TYPE ty_data,
*** Feld, in das die Daten geschoben werden sollen:
lv_feld TYPE c LENGTH 100.
*** Erforderliche Feldsymbole
FIELD-SYMBOLS:
<x1> TYPE ty_data.
*** Programmstart
START-OF-SELECTION.
*** Testdaten füllen
ls_data-feld1 = ‘ABCDEFGHIJ’.
ls_data-feld2 = ‘12345’.
ls_data-feld3 = 123.
ls_data-feld4 = ‘9876.543’.
*** Zielfeld löschen
CLEAR lv_feld.
*** Casting durchführen
ASSIGN lv_feld TO <x1> CASTING.
*** Zuweisung über gecastete Strukturen
<x1> = ls_Data.
*** Test Ausgabe
WRITE: / ‘Ergebnis:’, lv_feld.
- 7. December: Excel Racing Simulation – Root Vole Race - 7. Dezember 2024
- 5. December: ABAPConf - 5. Dezember 2024
- 4. December: Only a lazy developer is a good developer - 4. Dezember 2024